﻿using Newtonsoft.Json;
using NUnit.Framework;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace C_高级编程
{
    [TestFixture]
    public class Json
    {
        //.net 中提供的Json操作组件
        //①、NewtonSoft.Json
        //②、FastJson
        //Json操作

        [Test]
        public void test()
        {
            string json = "{\"Id\":1,\"Name\":\"任我行网络教育有限公司\",\"Url\":\"www.baidu.com\"}";

            //反序列化   (将Json字符串转化为C#对象)
            //通过JsonConvert类中的DeserializeObject<>泛型方法，将Json字符串反序列化成对应的类型。
            var site11 = JsonConvert.DeserializeObject<site>(json);

            //序列化：   (将C#对象转化成Json字符串)
            //SerializeObject是个非泛型方法
            string json1 = JsonConvert.SerializeObject(site11);

            //在.net 7.0以后，如果类中没有重载构造函数，只有默认无参构造函数，想在创建对象时给属性初始化，可以使用"初始化器"
            site site2 = new site() { Id = 1 ,Name="小于农场",Url="xyfarm.top"};

            string json2 = JsonConvert.SerializeObject(site2);
        }

        [Test]
        //Json数组
        public void test2() 
        {
            string josnArray = "[{\"Id\":1,\"Name\":\"任我行网络教育有限公司\",\"Url\":\"www.baidu.com\"},{\"Id\":2,\"Name\":\"小于农场有限公司\",\"Url\":\"xyfarm.top\"},{\"Id\":3,\"Name\":\"彭果团\",\"Url\":\"www.pgt.com\"}]";
            List<site> siteList = JsonConvert.DeserializeObject<List<site>>(josnArray);
            foreach (site item in siteList)
            {
                Console.WriteLine(JsonConvert.SerializeObject(item));
            }
            int a = siteList.Count == 0 ? 0 : siteList.Count;
        }
    }

    public class  site
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public string Url { get; set; }
    }
}
